<!DOCTYPE html><html lang="en-US"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,height=device-height,initial-scale=1.0"><meta name="apple-mobile-web-app-capable" content="yes"><meta http-equiv="X-UA-Compatible" content="ie=edge"><meta property="og:type" content="website"><meta name="twitter:card" content="summary"><style>.bespoke-marp-note,.bespoke-marp-osc,.bespoke-progress-parent{display:none;transition:none}@media screen{body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:0;color:inherit;cursor:pointer;font-size:inherit;opacity:.8;outline:none;padding:0;transition:opacity .2s linear;-webkit-tap-highlight-color:transparent}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:disabled,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:disabled,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:disabled{cursor:not-allowed;opacity:.15!important}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:hover,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:hover,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:hover{opacity:1}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:active,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:active,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:hover:active{opacity:.6}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:not(:disabled),body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button:hover:not(:disabled),body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button:hover:not(:disabled){transition:none}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev],body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button.bespoke-marp-presenter-info-page-prev{background:transparent url("") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button.bespoke-marp-presenter-info-page-next{background:transparent url("") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen]{background:transparent url("") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button.exit[data-bespoke-marp-osc=fullscreen],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button.exit[data-bespoke-marp-osc=fullscreen]{background-image:url("")}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=presenter],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=presenter]{background:transparent url("") no-repeat 50%;background-size:contain;overflow:hidden;text-indent:100%;white-space:nowrap}body,html{height:100%;margin:0}body{background:#000;overflow:hidden}svg.bespoke-marp-slide{content-visibility:hidden;z-index:-1;pointer-events:none;opacity:0}svg.bespoke-marp-slide.bespoke-marp-active{content-visibility:visible;z-index:0;pointer-events:auto;opacity:1}svg.bespoke-marp-slide.bespoke-marp-active.bespoke-marp-active-ready *{-webkit-animation-name:__bespoke_marp__!important;animation-name:__bespoke_marp__!important}@supports not (content-visibility:hidden){svg.bespoke-marp-slide[data-bespoke-marp-load=hideable]{display:none}svg.bespoke-marp-slide[data-bespoke-marp-load=hideable].bespoke-marp-active{display:block}}[data-bespoke-marp-fragment=inactive]{visibility:hidden}body[data-bespoke-view=""] .bespoke-marp-parent,body[data-bespoke-view=next] .bespoke-marp-parent{bottom:0;left:0;position:absolute;right:0;top:0}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc{background:rgba(0,0,0,.65);border-radius:7px;bottom:50px;color:#fff;display:block;font-family:Helvetica,Arial,sans-serif;font-size:16px;left:50%;line-height:0;opacity:1;padding:12px;position:absolute;touch-action:manipulation;transform:translateX(-50%);transition:opacity .2s linear;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap;z-index:1;will-change:transform}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>*,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>*{margin-left:6px}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>:first-child,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>:first-child{margin-left:0}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>span,body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>span{opacity:.8}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>span[data-bespoke-marp-osc=page],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>span[data-bespoke-marp-osc=page]{display:inline-block;min-width:140px;text-align:center}body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen],body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=presenter],body[data-bespoke-view=""] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=fullscreen],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=next],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=presenter],body[data-bespoke-view=next] .bespoke-marp-parent>.bespoke-marp-osc>button[data-bespoke-marp-osc=prev]{height:32px;line-height:32px;width:32px}body[data-bespoke-view=""] .bespoke-marp-parent.bespoke-marp-inactive,body[data-bespoke-view=next] .bespoke-marp-parent.bespoke-marp-inactive{cursor:none}body[data-bespoke-view=""] .bespoke-marp-parent.bespoke-marp-inactive>.bespoke-marp-osc,body[data-bespoke-view=next] .bespoke-marp-parent.bespoke-marp-inactive>.bespoke-marp-osc{opacity:0;pointer-events:none}body[data-bespoke-view=""] svg.bespoke-marp-slide,body[data-bespoke-view=next] svg.bespoke-marp-slide{height:100%;left:0;position:absolute;top:0;width:100%}body[data-bespoke-view=""] .bespoke-progress-parent{background:#222;display:flex;height:5px;width:100%}body[data-bespoke-view=""] .bespoke-progress-parent+.bespoke-marp-parent{top:5px}body[data-bespoke-view=""] .bespoke-progress-parent .bespoke-progress-bar{flex:0 0 0;background:#0288d1;transition:flex-basis .2s cubic-bezier(0,1,1,1)}body[data-bespoke-view=next]{background:transparent}body[data-bespoke-view=presenter]{background:#161616}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container{font-family:Helvetica,Arial,sans-serif;height:100%;left:0;position:absolute;top:0;width:100%;display:grid;grid-template-columns:2fr 1fr;grid-template-rows:minmax(140px,1fr) 2fr 3em;grid-template-areas:"current next" "current note" "info    note"}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-parent{grid-area:current;position:relative;overflow:hidden}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-parent svg.bespoke-marp-slide{height:calc(100% - 40px);left:20px;position:absolute;pointer-events:none;top:20px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:calc(100% - 40px)}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-parent svg.bespoke-marp-slide.bespoke-marp-active{filter:drop-shadow(0 3px 10px rgba(0,0,0,.5))}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-next-container{background:#222;cursor:pointer;display:none;grid-area:next;overflow:hidden;position:relative}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-next-container.active{display:block}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-next-container iframe.bespoke-marp-presenter-next{background:transparent;border:0;display:block;filter:drop-shadow(0 3px 10px rgba(0,0,0,.5));height:calc(100% - 40px);left:20px;position:absolute;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;top:20px;width:calc(100% - 40px)}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container{background:#222;color:#eee;grid-area:note}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note{margin:20px;width:calc(100% - 40px);height:calc(100% - 40px);box-sizing:border-box;font-size:1.1em;overflow:auto;padding-right:3px;white-space:pre-wrap;word-wrap:break-word;scrollbar-width:thin;scrollbar-color:hsla(0,0%,93.3%,.5) transparent}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note::-webkit-scrollbar{width:6px}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note::-webkit-scrollbar-track{background:transparent}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note::-webkit-scrollbar-thumb{background:hsla(0,0%,93.3%,.5);border-radius:6px}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note:empty{pointer-events:none}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note.active{display:block}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note p:first-child{margin-top:0}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-note-container .bespoke-marp-note p:last-child{margin-bottom:0}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container{align-items:center;box-sizing:border-box;color:#eee;display:flex;flex-wrap:nowrap;grid-area:info;justify-content:center;padding:0 10px}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-page,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-time,body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-timer{display:block;box-sizing:border-box;padding:0 10px;white-space:nowrap;width:100%}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container button{height:1.5em;line-height:1.5em;width:1.5em}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-page{order:2;text-align:center}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-page .bespoke-marp-presenter-info-page-text{display:inline-block;min-width:120px;text-align:center}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-time{color:#999;order:1;text-align:left}body[data-bespoke-view=presenter] .bespoke-marp-presenter-container .bespoke-marp-presenter-info-container .bespoke-marp-presenter-info-timer{color:#999;order:3;text-align:right}}@media print{.bespoke-marp-presenter-info-container,.bespoke-marp-presenter-next-container,.bespoke-marp-presenter-note-container{display:none}}</style><style>@charset "UTF-8";@import url("https://fonts.googleapis.com/css?family=Lato:400,900|Roboto+Mono:400,700&display=swap");div#p>svg>foreignObject>section{width:1280px;height:720px;box-sizing:border-box;overflow:hidden;position:relative;scroll-snap-align:center center}div#p>svg>foreignObject>section:after{bottom:0;content:attr(data-marpit-pagination);padding:inherit;pointer-events:none;position:absolute;right:0}div#p>svg>foreignObject>section:not([data-marpit-pagination]):after{display:none}/* Normalization */div#p>svg>foreignObject>section h1{font-size:2em;margin:0.67em 0}div#p>svg>foreignObject>section video::-webkit-media-controls{will-change:transform}@page{size:1280px 720px;margin:0}@media print{body,html{background-color:#fff;margin:0;page-break-inside:avoid;break-inside:avoid-page}div#p>svg>foreignObject>section{page-break-before:always;break-before:page}div#p>svg>foreignObject>section,div#p>svg>foreignObject>section *{-webkit-print-color-adjust:exact!important;animation-delay:0s!important;animation-duration:0s!important;color-adjust:exact!important;transition:none!important}div#p>svg[data-marpit-svg]{display:block;height:100vh;width:100vw}}@font-face{font-family:KaTeX_AMS;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_AMS-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_AMS-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_AMS-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Caligraphic-Bold.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Caligraphic-Bold.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Caligraphic-Bold.ttf') format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Caligraphic-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Caligraphic-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Caligraphic-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Fraktur-Bold.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Fraktur-Bold.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Fraktur-Bold.ttf') format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Fraktur-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Fraktur-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Fraktur-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-Bold.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-Bold.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-Bold.ttf') format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-BoldItalic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-BoldItalic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-BoldItalic.ttf') format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Main;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-Italic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-Italic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-Italic.ttf') format("truetype");font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Main-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Math-BoldItalic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Math-BoldItalic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Math-BoldItalic.ttf') format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Math;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Math-Italic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Math-Italic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Math-Italic.ttf') format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_SansSerif-Bold.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_SansSerif-Bold.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_SansSerif-Bold.ttf') format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"KaTeX_SansSerif";src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_SansSerif-Italic.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_SansSerif-Italic.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_SansSerif-Italic.ttf') format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_SansSerif-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_SansSerif-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_SansSerif-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Script-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Script-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Script-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size1-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size1-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size1-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size2-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size2-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size2-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size3-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size3-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size3-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size4-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size4-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Size4-Regular.ttf') format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Typewriter-Regular.woff2') format("woff2"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Typewriter-Regular.woff') format("woff"),url('https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/fonts/KaTeX_Typewriter-Regular.ttf') format("truetype");font-weight:400;font-style:normal}div#p>svg>foreignObject>section .katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto;border-color:currentColor}div#p>svg>foreignObject>section .katex *{-ms-high-contrast-adjust:none!important}div#p>svg>foreignObject>section .katex .katex-version:after{content:"0.12.0"}div#p>svg>foreignObject>section .katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}div#p>svg>foreignObject>section .katex .katex-html>.newline{display:block}div#p>svg>foreignObject>section .katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}div#p>svg>foreignObject>section .katex .base,div#p>svg>foreignObject>section .katex .strut{display:inline-block}div#p>svg>foreignObject>section .katex .textbf{font-weight:700}div#p>svg>foreignObject>section .katex .textit{font-style:italic}div#p>svg>foreignObject>section .katex .textrm{font-family:KaTeX_Main}div#p>svg>foreignObject>section .katex .textsf{font-family:KaTeX_SansSerif}div#p>svg>foreignObject>section .katex .texttt{font-family:KaTeX_Typewriter}div#p>svg>foreignObject>section .katex .mathnormal{font-family:KaTeX_Math;font-style:italic}div#p>svg>foreignObject>section .katex .mathit{font-family:KaTeX_Main;font-style:italic}div#p>svg>foreignObject>section .katex .mathrm{font-style:normal}div#p>svg>foreignObject>section .katex .mathbf{font-family:KaTeX_Main;font-weight:700}div#p>svg>foreignObject>section .katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}div#p>svg>foreignObject>section .katex .amsrm,div#p>svg>foreignObject>section .katex .mathbb,div#p>svg>foreignObject>section .katex .textbb{font-family:KaTeX_AMS}div#p>svg>foreignObject>section .katex .mathcal{font-family:KaTeX_Caligraphic}div#p>svg>foreignObject>section .katex .mathfrak,div#p>svg>foreignObject>section .katex .textfrak{font-family:KaTeX_Fraktur}div#p>svg>foreignObject>section .katex .mathtt{font-family:KaTeX_Typewriter}div#p>svg>foreignObject>section .katex .mathscr,div#p>svg>foreignObject>section .katex .textscr{font-family:KaTeX_Script}div#p>svg>foreignObject>section .katex .mathsf,div#p>svg>foreignObject>section .katex .textsf{font-family:KaTeX_SansSerif}div#p>svg>foreignObject>section .katex .mathboldsf,div#p>svg>foreignObject>section .katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}div#p>svg>foreignObject>section .katex .mathitsf,div#p>svg>foreignObject>section .katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}div#p>svg>foreignObject>section .katex .mainrm{font-family:KaTeX_Main;font-style:normal}div#p>svg>foreignObject>section .katex .vlist-t{display:inline-table;table-layout:fixed;border-collapse:collapse}div#p>svg>foreignObject>section .katex .vlist-r{display:table-row}div#p>svg>foreignObject>section .katex .vlist{display:table-cell;vertical-align:bottom;position:relative}div#p>svg>foreignObject>section .katex .vlist>span{display:block;height:0;position:relative}div#p>svg>foreignObject>section .katex .vlist>span>span{display:inline-block}div#p>svg>foreignObject>section .katex .vlist>span>.pstrut{overflow:hidden;width:0}div#p>svg>foreignObject>section .katex .vlist-t2{margin-right:-2px}div#p>svg>foreignObject>section .katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px;min-width:2px}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.vlist-s{--marpit-root-font-size:1px}div#p>svg>foreignObject>section .katex .vbox{flex-direction:column;align-items:baseline}div#p>svg>foreignObject>section .katex .hbox,div#p>svg>foreignObject>section .katex .vbox{display:inline-flex}div#p>svg>foreignObject>section .katex .hbox{flex-direction:row;width:100%}div#p>svg>foreignObject>section .katex .thinbox{display:inline-flex;flex-direction:row;width:0;max-width:0}div#p>svg>foreignObject>section .katex .msupsub{text-align:left}div#p>svg>foreignObject>section .katex .mfrac>span>span{text-align:center}div#p>svg>foreignObject>section .katex .mfrac .frac-line{display:inline-block;width:100%;border-bottom-style:solid}div#p>svg>foreignObject>section .katex .hdashline,div#p>svg>foreignObject>section .katex .hline,div#p>svg>foreignObject>section .katex .mfrac .frac-line,div#p>svg>foreignObject>section .katex .overline .overline-line,div#p>svg>foreignObject>section .katex .rule,div#p>svg>foreignObject>section .katex .underline .underline-line{min-height:1px}div#p>svg>foreignObject>section .katex .mspace{display:inline-block}div#p>svg>foreignObject>section .katex .clap,div#p>svg>foreignObject>section .katex .llap,div#p>svg>foreignObject>section .katex .rlap{width:0;position:relative}div#p>svg>foreignObject>section .katex .clap>.inner,div#p>svg>foreignObject>section .katex .llap>.inner,div#p>svg>foreignObject>section .katex .rlap>.inner{position:absolute}div#p>svg>foreignObject>section .katex .clap>.fix,div#p>svg>foreignObject>section .katex .llap>.fix,div#p>svg>foreignObject>section .katex .rlap>.fix{display:inline-block}div#p>svg>foreignObject>section .katex .llap>.inner{right:0}div#p>svg>foreignObject>section .katex .clap>.inner,div#p>svg>foreignObject>section .katex .rlap>.inner{left:0}div#p>svg>foreignObject>section .katex .clap>.inner>span{margin-left:-50%;margin-right:50%}div#p>svg>foreignObject>section .katex .rule{display:inline-block;border:0 solid;position:relative}div#p>svg>foreignObject>section .katex .hline,div#p>svg>foreignObject>section .katex .overline .overline-line,div#p>svg>foreignObject>section .katex .underline .underline-line{display:inline-block;width:100%;border-bottom-style:solid}div#p>svg>foreignObject>section .katex .hdashline{display:inline-block;width:100%;border-bottom-style:dashed}div#p>svg>foreignObject>section .katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size1{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size1{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size2{font-size:1.2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size2{--marpit-root-font-size:1.2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size3{font-size:1.4em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size3{--marpit-root-font-size:1.4em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size4{font-size:1.6em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size4{--marpit-root-font-size:1.6em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size5{font-size:1.8em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size5{--marpit-root-font-size:1.8em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size6{font-size:2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size6{--marpit-root-font-size:2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size7{font-size:2.4em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size7{--marpit-root-font-size:2.4em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size8{font-size:2.88em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size8{--marpit-root-font-size:2.88em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size9{font-size:3.456em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size9{--marpit-root-font-size:3.456em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size10{font-size:4.148em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size10{--marpit-root-font-size:4.148em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size1.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size1.size11{font-size:4.976em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size1.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size1.size11{--marpit-root-font-size:4.976em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size1{font-size:.83333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size1{--marpit-root-font-size:.83333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size2{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size2{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size3{font-size:1.16666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size3{--marpit-root-font-size:1.16666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size4{font-size:1.33333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size4{--marpit-root-font-size:1.33333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size5{font-size:1.5em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size5{--marpit-root-font-size:1.5em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size6{font-size:1.66666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size6{--marpit-root-font-size:1.66666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size7{font-size:2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size7{--marpit-root-font-size:2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size8{font-size:2.4em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size8{--marpit-root-font-size:2.4em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size9{font-size:2.88em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size9{--marpit-root-font-size:2.88em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size10{font-size:3.45666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size10{--marpit-root-font-size:3.45666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size2.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size2.size11{font-size:4.14666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size2.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size2.size11{--marpit-root-font-size:4.14666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size1{font-size:.71428571em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size1{--marpit-root-font-size:.71428571em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size2{font-size:.85714286em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size2{--marpit-root-font-size:.85714286em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size3{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size3{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size4{font-size:1.14285714em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size4{--marpit-root-font-size:1.14285714em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size5{font-size:1.28571429em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size5{--marpit-root-font-size:1.28571429em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size6{font-size:1.42857143em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size6{--marpit-root-font-size:1.42857143em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size7{font-size:1.71428571em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size7{--marpit-root-font-size:1.71428571em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size8{font-size:2.05714286em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size8{--marpit-root-font-size:2.05714286em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size9{font-size:2.46857143em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size9{--marpit-root-font-size:2.46857143em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size10{font-size:2.96285714em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size10{--marpit-root-font-size:2.96285714em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size3.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size3.size11{font-size:3.55428571em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size3.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size3.size11{--marpit-root-font-size:3.55428571em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size1{font-size:.625em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size1{--marpit-root-font-size:.625em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size2{font-size:.75em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size2{--marpit-root-font-size:.75em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size3{font-size:.875em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size3{--marpit-root-font-size:.875em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size4{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size4{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size5{font-size:1.125em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size5{--marpit-root-font-size:1.125em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size6{font-size:1.25em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size6{--marpit-root-font-size:1.25em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size7{font-size:1.5em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size7{--marpit-root-font-size:1.5em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size8{font-size:1.8em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size8{--marpit-root-font-size:1.8em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size9{font-size:2.16em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size9{--marpit-root-font-size:2.16em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size10{font-size:2.5925em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size10{--marpit-root-font-size:2.5925em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size4.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size4.size11{font-size:3.11em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size4.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size4.size11{--marpit-root-font-size:3.11em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size1{font-size:.55555556em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size1{--marpit-root-font-size:.55555556em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size2{font-size:.66666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size2{--marpit-root-font-size:.66666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size3{font-size:.77777778em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size3{--marpit-root-font-size:.77777778em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size4{font-size:.88888889em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size4{--marpit-root-font-size:.88888889em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size5{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size5{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size6{font-size:1.11111111em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size6{--marpit-root-font-size:1.11111111em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size7{font-size:1.33333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size7{--marpit-root-font-size:1.33333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size8{font-size:1.6em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size8{--marpit-root-font-size:1.6em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size9{font-size:1.92em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size9{--marpit-root-font-size:1.92em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size10{font-size:2.30444444em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size10{--marpit-root-font-size:2.30444444em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size5.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size5.size11{font-size:2.76444444em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size5.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size5.size11{--marpit-root-font-size:2.76444444em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size1{font-size:.5em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size1{--marpit-root-font-size:.5em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size2{font-size:.6em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size2{--marpit-root-font-size:.6em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size3{font-size:.7em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size3{--marpit-root-font-size:.7em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size4{font-size:.8em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size4{--marpit-root-font-size:.8em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size5{font-size:.9em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size5{--marpit-root-font-size:.9em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size6{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size6{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size7{font-size:1.2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size7{--marpit-root-font-size:1.2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size8{font-size:1.44em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size8{--marpit-root-font-size:1.44em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size9{font-size:1.728em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size9{--marpit-root-font-size:1.728em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size10{font-size:2.074em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size10{--marpit-root-font-size:2.074em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size6.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size6.size11{font-size:2.488em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size6.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size6.size11{--marpit-root-font-size:2.488em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size1{font-size:.41666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size1{--marpit-root-font-size:.41666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size2{font-size:.5em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size2{--marpit-root-font-size:.5em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size3{font-size:.58333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size3{--marpit-root-font-size:.58333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size4{font-size:.66666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size4{--marpit-root-font-size:.66666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size5{font-size:.75em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size5{--marpit-root-font-size:.75em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size6{font-size:.83333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size6{--marpit-root-font-size:.83333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size7{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size7{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size8{font-size:1.2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size8{--marpit-root-font-size:1.2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size9{font-size:1.44em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size9{--marpit-root-font-size:1.44em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size10{font-size:1.72833333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size10{--marpit-root-font-size:1.72833333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size7.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size7.size11{font-size:2.07333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size7.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size7.size11{--marpit-root-font-size:2.07333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size1{font-size:.34722222em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size1{--marpit-root-font-size:.34722222em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size2{font-size:.41666667em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size2{--marpit-root-font-size:.41666667em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size3{font-size:.48611111em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size3{--marpit-root-font-size:.48611111em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size4{font-size:.55555556em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size4{--marpit-root-font-size:.55555556em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size5{font-size:.625em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size5{--marpit-root-font-size:.625em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size6{font-size:.69444444em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size6{--marpit-root-font-size:.69444444em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size7{font-size:.83333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size7{--marpit-root-font-size:.83333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size8{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size8{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size9{font-size:1.2em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size9{--marpit-root-font-size:1.2em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size10{font-size:1.44027778em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size10{--marpit-root-font-size:1.44027778em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size8.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size8.size11{font-size:1.72777778em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size8.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size8.size11{--marpit-root-font-size:1.72777778em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size1{font-size:.28935185em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size1{--marpit-root-font-size:.28935185em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size2{font-size:.34722222em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size2{--marpit-root-font-size:.34722222em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size3{font-size:.40509259em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size3{--marpit-root-font-size:.40509259em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size4{font-size:.46296296em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size4{--marpit-root-font-size:.46296296em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size5{font-size:.52083333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size5{--marpit-root-font-size:.52083333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size6{font-size:.5787037em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size6{--marpit-root-font-size:.5787037em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size7{font-size:.69444444em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size7{--marpit-root-font-size:.69444444em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size8{font-size:.83333333em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size8{--marpit-root-font-size:.83333333em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size9{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size9{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size10{font-size:1.20023148em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size10{--marpit-root-font-size:1.20023148em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size9.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size9.size11{font-size:1.43981481em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size9.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size9.size11{--marpit-root-font-size:1.43981481em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size1{font-size:.24108004em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size1{--marpit-root-font-size:.24108004em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size2{font-size:.28929605em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size2{--marpit-root-font-size:.28929605em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size3{font-size:.33751205em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size3{--marpit-root-font-size:.33751205em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size4{font-size:.38572806em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size4{--marpit-root-font-size:.38572806em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size5{font-size:.43394407em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size5{--marpit-root-font-size:.43394407em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size6{font-size:.48216008em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size6{--marpit-root-font-size:.48216008em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size7{font-size:.57859209em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size7{--marpit-root-font-size:.57859209em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size8{font-size:.69431051em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size8{--marpit-root-font-size:.69431051em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size9{font-size:.83317261em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size9{--marpit-root-font-size:.83317261em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size10{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size10{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size10.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size10.size11{font-size:1.19961427em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size10.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size10.size11{--marpit-root-font-size:1.19961427em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size1,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size1{font-size:.20096463em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size1,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size1{--marpit-root-font-size:.20096463em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size2,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size2{font-size:.24115756em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size2,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size2{--marpit-root-font-size:.24115756em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size3,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size3{font-size:.28135048em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size3,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size3{--marpit-root-font-size:.28135048em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size4,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size4{font-size:.32154341em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size4,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size4{--marpit-root-font-size:.32154341em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size5,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size5{font-size:.36173633em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size5,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size5{--marpit-root-font-size:.36173633em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size6,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size6{font-size:.40192926em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size6,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size6{--marpit-root-font-size:.40192926em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size7,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size7{font-size:.48231511em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size7,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size7{--marpit-root-font-size:.48231511em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size8,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size8{font-size:.57877814em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size8,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size8{--marpit-root-font-size:.57877814em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size9,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size9{font-size:.69453376em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size9,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size9{--marpit-root-font-size:.69453376em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size10,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size10{font-size:.83360129em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size10,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size10{--marpit-root-font-size:.83360129em}div#p>svg>foreignObject>section .katex .fontsize-ensurer.reset-size11.size11,div#p>svg>foreignObject>section .katex .sizing.reset-size11.size11{font-size:1em}div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.fontsize-ensurer.reset-size11.size11,div#p>svg>foreignObject>section .katex div#p>svg>foreignObject>section section.sizing.reset-size11.size11{--marpit-root-font-size:1em}div#p>svg>foreignObject>section .katex .delimsizing.size1{font-family:KaTeX_Size1}div#p>svg>foreignObject>section .katex .delimsizing.size2{font-family:KaTeX_Size2}div#p>svg>foreignObject>section .katex .delimsizing.size3{font-family:KaTeX_Size3}div#p>svg>foreignObject>section .katex .delimsizing.size4{font-family:KaTeX_Size4}div#p>svg>foreignObject>section .katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}div#p>svg>foreignObject>section .katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}div#p>svg>foreignObject>section .katex .nulldelimiter{display:inline-block;width:.12em}div#p>svg>foreignObject>section .katex .delimcenter,div#p>svg>foreignObject>section .katex .op-symbol{position:relative}div#p>svg>foreignObject>section .katex .op-symbol.small-op{font-family:KaTeX_Size1}div#p>svg>foreignObject>section .katex .op-symbol.large-op{font-family:KaTeX_Size2}div#p>svg>foreignObject>section .katex .accent>.vlist-t,div#p>svg>foreignObject>section .katex .op-limits>.vlist-t{text-align:center}div#p>svg>foreignObject>section .katex .accent .accent-body{position:relative}div#p>svg>foreignObject>section .katex .accent .accent-body:not(.accent-full){width:0}div#p>svg>foreignObject>section .katex .overlay{display:block}div#p>svg>foreignObject>section .katex .mtable .vertical-separator{display:inline-block;min-width:1px}div#p>svg>foreignObject>section .katex .mtable .arraycolsep{display:inline-block}div#p>svg>foreignObject>section .katex .mtable .col-align-c>.vlist-t{text-align:center}div#p>svg>foreignObject>section .katex .mtable .col-align-l>.vlist-t{text-align:left}div#p>svg>foreignObject>section .katex .mtable .col-align-r>.vlist-t{text-align:right}div#p>svg>foreignObject>section .katex .svg-align{text-align:left}div#p>svg>foreignObject>section .katex svg{display:block;position:absolute;width:100%;height:inherit;fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}div#p>svg>foreignObject>section .katex svg path{stroke:none}div#p>svg>foreignObject>section .katex img{border-style:none;min-width:0;min-height:0;max-width:none;max-height:none}div#p>svg>foreignObject>section .katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}div#p>svg>foreignObject>section .katex .stretchy:after,div#p>svg>foreignObject>section .katex .stretchy:before{content:""}div#p>svg>foreignObject>section .katex .hide-tail{width:100%;position:relative;overflow:hidden}div#p>svg>foreignObject>section .katex .halfarrow-left{left:0}div#p>svg>foreignObject>section .katex .halfarrow-left,div#p>svg>foreignObject>section .katex .halfarrow-right{position:absolute;width:50.2%;overflow:hidden}div#p>svg>foreignObject>section .katex .halfarrow-right{right:0}div#p>svg>foreignObject>section .katex .brace-left{position:absolute;left:0;width:25.1%;overflow:hidden}div#p>svg>foreignObject>section .katex .brace-center{position:absolute;left:25%;width:50%;overflow:hidden}div#p>svg>foreignObject>section .katex .brace-right{position:absolute;right:0;width:25.1%;overflow:hidden}div#p>svg>foreignObject>section .katex .x-arrow-pad{padding:0 .5em}div#p>svg>foreignObject>section .katex .mover,div#p>svg>foreignObject>section .katex .munder,div#p>svg>foreignObject>section .katex .x-arrow{text-align:center}div#p>svg>foreignObject>section .katex .boxpad{padding:0 .3em}div#p>svg>foreignObject>section .katex .fbox,div#p>svg>foreignObject>section .katex .fcolorbox{box-sizing:border-box;border:.04em solid}div#p>svg>foreignObject>section .katex .cancel-pad{padding:0 .2em}div#p>svg>foreignObject>section .katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}div#p>svg>foreignObject>section .katex .sout{border-bottom-style:solid;border-bottom-width:.08em}div#p>svg>foreignObject>section .katex-display{display:block;margin:1em 0;text-align:center}div#p>svg>foreignObject>section .katex-display>.katex{display:block;text-align:center;white-space:nowrap}div#p>svg>foreignObject>section .katex-display>.katex>.katex-html{display:block;position:relative}div#p>svg>foreignObject>section .katex-display>.katex>.katex-html>.tag{position:absolute;right:0}div#p>svg>foreignObject>section .katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}div#p>svg>foreignObject>section .katex-display.fleqn>.katex{text-align:left;padding-left:2em}div#p>svg>foreignObject>section .katex-display{margin:0}div#p>svg>foreignObject>section svg[data-marp-fitting-math]{--preserve-aspect-ratio:xMidYMid meet}div#p>svg>foreignObject>section svg[data-marp-fitting-math] [data-marp-fitting-svg-content]{margin:0 auto}div#p>svg>foreignObject>section svg[data-marp-fitting=svg]{display:block;height:auto;width:100%}@supports (-ms-ime-align:auto){div#p>svg>foreignObject>section svg[data-marp-fitting=svg]{position:static}}div#p>svg>foreignObject>section svg[data-marp-fitting=svg].__reflow__{content:""}@supports (-ms-ime-align:auto){div#p>svg>foreignObject>section svg[data-marp-fitting=svg].__reflow__{position:relative}}div#p>svg>foreignObject>section [data-marp-fitting-svg-content]{display:table;white-space:nowrap}div#p>svg>foreignObject>section [data-marp-fitting-svg-content-wrap]{white-space:pre}div#p>svg>foreignObject>section img[data-marp-twemoji]{background:transparent;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em;width:1em}
/*!
 * Marp / Marpit Gaia theme.
 *
 * @theme gaia
 * @author Yuki Hattori
 *
 * @auto-scaling true
 * @size 4:3 960px 720px
 */div#p>svg>foreignObject>section .hljs{display:block;overflow-x:auto;padding:.5em;background:#000;color:#f8f8f8}div#p>svg>foreignObject>section .hljs-comment,div#p>svg>foreignObject>section .hljs-quote{color:#aeaeae;font-style:italic}div#p>svg>foreignObject>section .hljs-keyword,div#p>svg>foreignObject>section .hljs-selector-tag,div#p>svg>foreignObject>section .hljs-type{color:#e28964}div#p>svg>foreignObject>section .hljs-string{color:#65b042}div#p>svg>foreignObject>section .hljs-subst{color:#daefa3}div#p>svg>foreignObject>section .hljs-link,div#p>svg>foreignObject>section .hljs-regexp{color:#e9c062}div#p>svg>foreignObject>section .hljs-name,div#p>svg>foreignObject>section .hljs-section,div#p>svg>foreignObject>section .hljs-tag,div#p>svg>foreignObject>section .hljs-title{color:#89bdff}div#p>svg>foreignObject>section .hljs-class .hljs-title,div#p>svg>foreignObject>section .hljs-doctag{text-decoration:underline}div#p>svg>foreignObject>section .hljs-bullet,div#p>svg>foreignObject>section .hljs-number,div#p>svg>foreignObject>section .hljs-symbol{color:#3387cc}div#p>svg>foreignObject>section .hljs-params,div#p>svg>foreignObject>section .hljs-template-variable,div#p>svg>foreignObject>section .hljs-variable{color:#3e87e3}div#p>svg>foreignObject>section .hljs-attribute{color:#cda869}div#p>svg>foreignObject>section .hljs-meta{color:#8996a8}div#p>svg>foreignObject>section .hljs-formula{background-color:#0e2231;color:#f8f8f8;font-style:italic}div#p>svg>foreignObject>section .hljs-addition{background-color:#253b22;color:#f8f8f8}div#p>svg>foreignObject>section .hljs-deletion{background-color:#420e09;color:#f8f8f8}div#p>svg>foreignObject>section .hljs-selector-class{color:#9b703f}div#p>svg>foreignObject>section .hljs-selector-id{color:#8b98ab}div#p>svg>foreignObject>section .hljs-emphasis{font-style:italic}div#p>svg>foreignObject>section .hljs-strong{font-weight:700}div#p>svg>foreignObject>section svg[data-marp-fitting=svg]{max-height:580px}div#p>svg>foreignObject>section h1,div#p>svg>foreignObject>section h2,div#p>svg>foreignObject>section h3,div#p>svg>foreignObject>section h4,div#p>svg>foreignObject>section h5,div#p>svg>foreignObject>section h6{margin:.5em 0 0}div#p>svg>foreignObject>section h1 strong,div#p>svg>foreignObject>section h2 strong,div#p>svg>foreignObject>section h3 strong,div#p>svg>foreignObject>section h4 strong,div#p>svg>foreignObject>section h5 strong,div#p>svg>foreignObject>section h6 strong{font-weight:inherit}div#p>svg>foreignObject>section h1{font-size:1.8em}div#p>svg>foreignObject>section h2{font-size:1.5em}div#p>svg>foreignObject>section h3{font-size:1.3em}div#p>svg>foreignObject>section h4{font-size:1.1em}div#p>svg>foreignObject>section h5{font-size:1em}div#p>svg>foreignObject>section h6{font-size:.9em}div#p>svg>foreignObject>section blockquote,div#p>svg>foreignObject>section p{margin:1em 0 0}div#p>svg>foreignObject>section ol>li,div#p>svg>foreignObject>section ul>li{margin:.3em 0 0}div#p>svg>foreignObject>section ol>li>p,div#p>svg>foreignObject>section ul>li>p{margin:.6em 0 0}div#p>svg>foreignObject>section code{display:inline-block;font-family:Roboto Mono,monospace;font-size:.8em;letter-spacing:0;margin:-.1em .15em;padding:.1em .2em;vertical-align:baseline}div#p>svg>foreignObject>section pre{display:block;margin:1em 0 0;min-height:1em;overflow:visible}div#p>svg>foreignObject>section pre code{box-sizing:border-box;margin:0;min-width:100%;padding:.5em;font-size:.7em}div#p>svg>foreignObject>section pre code svg[data-marp-fitting=svg]{max-height:calc(580px - 1em)}div#p>svg>foreignObject>section blockquote{margin:1em 0 0;padding:0 1em;position:relative}div#p>svg>foreignObject>section blockquote:after,div#p>svg>foreignObject>section blockquote:before{content:"“";display:block;font-family:Times New Roman,serif;font-weight:700;position:absolute}div#p>svg>foreignObject>section blockquote:before{top:0;left:0}div#p>svg>foreignObject>section blockquote:after{right:0;bottom:0;transform:rotate(180deg)}div#p>svg>foreignObject>section blockquote>:first-child{margin-top:0}div#p>svg>foreignObject>section mark{background:transparent}div#p>svg>foreignObject>section table{border-spacing:0;border-collapse:collapse;margin:1em 0 0}div#p>svg>foreignObject>section table td,div#p>svg>foreignObject>section table th{padding:.2em .4em;border-width:1px;border-style:solid}div#p>svg>foreignObject>section{background-image:linear-gradient(135deg,hsla(0,0%,53.3%,0),hsla(0,0%,53.3%,.02) 50%,hsla(0,0%,100%,0) 0,hsla(0,0%,100%,.05));font-size:35px;font-family:Lato,Avenir Next,Avenir,Trebuchet MS,Segoe UI,sans-serif;height:720px;line-height:1.35;letter-spacing:1.25px;padding:70px;width:1280px;word-wrap:break-word;color:#455a64;background-color:#fff8e1}div#p>svg>foreignObject>section{--marpit-root-font-size:35px}div#p>svg>foreignObject>section>:first-child,div#p>svg>foreignObject>section>header:first-child+*{margin-top:0}div#p>svg>foreignObject>section a,div#p>svg>foreignObject>section mark{color:#0288d1}div#p>svg>foreignObject>section code{background:#6a7a7d;color:#fff8e1}div#p>svg>foreignObject>section h1 strong,div#p>svg>foreignObject>section h2 strong,div#p>svg>foreignObject>section h3 strong,div#p>svg>foreignObject>section h4 strong,div#p>svg>foreignObject>section h5 strong,div#p>svg>foreignObject>section h6 strong{color:#0288d1}div#p>svg>foreignObject>section pre>code{background:#455a64}div#p>svg>foreignObject>section blockquote:after,div#p>svg>foreignObject>section blockquote:before,div#p>svg>foreignObject>section footer,div#p>svg>foreignObject>section header,div#p>svg>foreignObject>section section:after{color:#6a7a7d}div#p>svg>foreignObject>section table td,div#p>svg>foreignObject>section table th{border-color:#455a64}div#p>svg>foreignObject>section table thead th{background:#455a64;color:#fff8e1}div#p>svg>foreignObject>section table tbody>tr:nth-child(odd) td,div#p>svg>foreignObject>section table tbody>tr:nth-child(odd) th{background:rgba(69,90,100,.1)}div#p>svg>foreignObject>section.invert{color:#fff8e1;background-color:#455a64}div#p>svg>foreignObject>section.invert a,div#p>svg>foreignObject>section.invert mark{color:#81d4fa}div#p>svg>foreignObject>section.invert code{background:#dad8c8;color:#455a64}div#p>svg>foreignObject>section.invert h1 strong,div#p>svg>foreignObject>section.invert h2 strong,div#p>svg>foreignObject>section.invert h3 strong,div#p>svg>foreignObject>section.invert h4 strong,div#p>svg>foreignObject>section.invert h5 strong,div#p>svg>foreignObject>section.invert h6 strong{color:#81d4fa}div#p>svg>foreignObject>section.invert pre>code{background:#fff8e1}div#p>svg>foreignObject>section.invert blockquote:after,div#p>svg>foreignObject>section.invert blockquote:before,div#p>svg>foreignObject>section.invert footer,div#p>svg>foreignObject>section.invert header,div#p>svg>foreignObject>section.invert section:after{color:#dad8c8}div#p>svg>foreignObject>section.invert table td,div#p>svg>foreignObject>section.invert table th{border-color:#fff8e1}div#p>svg>foreignObject>section.invert table thead th{background:#fff8e1;color:#455a64}div#p>svg>foreignObject>section.invert table tbody>tr:nth-child(odd) td,div#p>svg>foreignObject>section.invert table tbody>tr:nth-child(odd) th{background:rgba(255,248,225,.1)}div#p>svg>foreignObject>section.gaia{color:#fff8e1;background-color:#0288d1}div#p>svg>foreignObject>section.gaia a,div#p>svg>foreignObject>section.gaia mark{color:#81d4fa}div#p>svg>foreignObject>section.gaia code{background:#cce2de;color:#0288d1}div#p>svg>foreignObject>section.gaia h1 strong,div#p>svg>foreignObject>section.gaia h2 strong,div#p>svg>foreignObject>section.gaia h3 strong,div#p>svg>foreignObject>section.gaia h4 strong,div#p>svg>foreignObject>section.gaia h5 strong,div#p>svg>foreignObject>section.gaia h6 strong{color:#81d4fa}div#p>svg>foreignObject>section.gaia pre>code{background:#fff8e1}div#p>svg>foreignObject>section.gaia blockquote:after,div#p>svg>foreignObject>section.gaia blockquote:before,div#p>svg>foreignObject>section.gaia footer,div#p>svg>foreignObject>section.gaia header,div#p>svg>foreignObject>section.gaia section:after{color:#cce2de}div#p>svg>foreignObject>section.gaia table td,div#p>svg>foreignObject>section.gaia table th{border-color:#fff8e1}div#p>svg>foreignObject>section.gaia table thead th{background:#fff8e1;color:#0288d1}div#p>svg>foreignObject>section.gaia table tbody>tr:nth-child(odd) td,div#p>svg>foreignObject>section.gaia table tbody>tr:nth-child(odd) th{background:rgba(255,248,225,.1)}div#p>svg>foreignObject>section.lead{display:flex;flex-direction:column;flex-wrap:nowrap;justify-content:center}div#p>svg>foreignObject>section.lead h1,div#p>svg>foreignObject>section.lead h2,div#p>svg>foreignObject>section.lead h3,div#p>svg>foreignObject>section.lead h4,div#p>svg>foreignObject>section.lead h5,div#p>svg>foreignObject>section.lead h6{text-align:center}div#p>svg>foreignObject>section.lead h1 svg[data-marp-fitting=svg],div#p>svg>foreignObject>section.lead h2 svg[data-marp-fitting=svg],div#p>svg>foreignObject>section.lead h3 svg[data-marp-fitting=svg],div#p>svg>foreignObject>section.lead h4 svg[data-marp-fitting=svg],div#p>svg>foreignObject>section.lead h5 svg[data-marp-fitting=svg],div#p>svg>foreignObject>section.lead h6 svg[data-marp-fitting=svg]{--preserve-aspect-ratio:xMidYMid meet}div#p>svg>foreignObject>section.lead p{text-align:center}div#p>svg>foreignObject>section.lead blockquote>h1,div#p>svg>foreignObject>section.lead blockquote>h2,div#p>svg>foreignObject>section.lead blockquote>h3,div#p>svg>foreignObject>section.lead blockquote>h4,div#p>svg>foreignObject>section.lead blockquote>h5,div#p>svg>foreignObject>section.lead blockquote>h6,div#p>svg>foreignObject>section.lead blockquote>p{text-align:left}div#p>svg>foreignObject>section.lead blockquote svg[data-marp-fitting=svg]:not([data-marp-fitting-math]){--preserve-aspect-ratio:xMinYMin meet}div#p>svg>foreignObject>section.lead ol>li>p,div#p>svg>foreignObject>section.lead ul>li>p{text-align:left}div#p>svg>foreignObject>section.lead table{margin-left:auto;margin-right:auto}div#p>svg>foreignObject>section:after,div#p>svg>foreignObject>section footer,div#p>svg>foreignObject>section header{box-sizing:border-box;font-size:66%;height:70px;line-height:50px;overflow:hidden;padding:10px 25px;position:absolute}div#p>svg>foreignObject>section:after{--marpit-root-font-size:66%}div#p>svg>foreignObject>section header{top:0}div#p>svg>foreignObject>section footer,div#p>svg>foreignObject>section header{left:0;right:0}div#p>svg>foreignObject>section footer{bottom:0}div#p>svg>foreignObject>section:after{right:0;bottom:0;font-size:80%}div#p>svg>foreignObject>section:after{--marpit-root-font-size:80%}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]{display:block!important;padding:0!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]:after,div#p>svg>foreignObject>section[data-marpit-advanced-background=background]:before,div#p>svg>foreignObject>section[data-marpit-advanced-background=content]:after,div#p>svg>foreignObject>section[data-marpit-advanced-background=content]:before{display:none!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]{all:initial;display:flex;flex-direction:row;height:100%;overflow:hidden;width:100%}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container][data-marpit-advanced-background-direction=vertical]{flex-direction:column}div#p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split]>div[data-marpit-advanced-background-container]{width:var(--marpit-advanced-background-split,50%)}div#p>svg>foreignObject>section[data-marpit-advanced-background=background][data-marpit-advanced-background-split=right]>div[data-marpit-advanced-background-container]{margin-left:calc(100% - var(--marpit-advanced-background-split, 50%))}div#p>svg>foreignObject>section[data-marpit-advanced-background=background]>div[data-marpit-advanced-background-container]>figure{all:initial;background-position:center;background-repeat:no-repeat;background-size:cover;flex:auto;margin:0}div#p>svg>foreignObject>section[data-marpit-advanced-background=content],div#p>svg>foreignObject>section[data-marpit-advanced-background=pseudo]{background:transparent!important}div#p>svg>foreignObject>section[data-marpit-advanced-background=pseudo],div#p>svg[data-marpit-svg]>foreignObject[data-marpit-advanced-background=pseudo]{pointer-events:none!important}div#p>svg>foreignObject>section[data-marpit-advanced-background-split]{width:100%;height:100%}</style></head><body><div class="bespoke-marp-osc"><button data-bespoke-marp-osc="prev" tabindex="-1" title="Previous slide">Previous slide</button><span data-bespoke-marp-osc="page"></span><button data-bespoke-marp-osc="next" tabindex="-1" title="Next slide">Next slide</button><button data-bespoke-marp-osc="fullscreen" tabindex="-1" title="Toggle fullscreen (f)">Toggle fullscreen</button><button data-bespoke-marp-osc="presenter" tabindex="-1" title="Open presenter view (p)">Open presenter view</button></div><div id="p"><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="1" data-class="lead" data-paginate="true" data-background-color="FloralWhite" data-footer="@aRoming" data-theme="gaia" class="lead" data-marpit-pagination="1" data-marpit-pagination-total="35" style="--class:lead;--paginate:true;--background-color:FloralWhite;--footer:@aRoming;--theme:gaia;background-color:FloralWhite;background-image:none;">
<h1>面向对象程序设计Object-Oriented Programming</h1>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="2" data-class="lead" data-paginate="true" data-background-color="FloralWhite" data-footer="@aRoming" data-theme="gaia" class="lead" data-marpit-pagination="2" data-marpit-pagination-total="35" style="--class:lead;--paginate:true;--background-color:FloralWhite;--footer:@aRoming;--theme:gaia;background-color:FloralWhite;background-image:none;">
<h2>面向对象Object-Oriented</h2>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="3" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="3" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<h3>什么是面向对象</h3>
<ol>
<li><code>object对象</code>： <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mtext>数据</mtext><mo>+</mo><mtext>行为（对数据内容的操作）</mtext></mrow><annotation encoding="application/x-tex">\text{数据} + \text{行为（对数据内容的操作）}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.76666em;vertical-align:-0.08333em;"></span><span class="mord text"><span class="mord cjk_fallback">数据</span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord text"><span class="mord cjk_fallback">行为（对数据内容的操作）</span></span></span></span></span></li>
<li><code>class类</code>： <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mtext>数据结构</mtext><mo>+</mo><mtext>算法（业务逻辑）</mtext></mrow><annotation encoding="application/x-tex">\text{数据结构} + \text{算法（业务逻辑）}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.76666em;vertical-align:-0.08333em;"></span><span class="mord text"><span class="mord cjk_fallback">数据结构</span></span><span class="mspace" style="margin-right:0.2222222222222222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222222222222222em;"></span></span><span class="base"><span class="strut" style="height:0.68333em;vertical-align:0em;"></span><span class="mord text"><span class="mord cjk_fallback">算法（业务逻辑）</span></span></span></span></span></li>
<li><code>class</code>是<code>object</code>的模板（结构），<code>object</code>是<code>class</code>的实例</li>
<li><code>class</code>是静态的、存储于<code>.text</code>，<code>object</code>是动态的、存储于<code>.data</code></li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="4" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="4" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<h3>什么是面向对象（contd.）</h3>
<ol>
<li><code>OO（Object-Oriented，面向对象）</code>： 将对象作为一个完整的实体进行抽象、设计和编码
<ol>
<li><code>OOA（Object-Oriented Analysis，面向对象分析）</code>： 抽象</li>
<li><code>OOD（Object-Oriented Design，面向对象设计）</code>： 设计</li>
<li><code>OOP（Object-Oriented Programming，面向对象编程）</code>： 编码</li>
</ol>
</li>
<li>面向对象的三大特征： <code>encapsulation封装</code>、<code>inheritance继承</code>、<code>polymorphism多态</code></li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="5" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="5" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<pre><code class="language-python"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-class"><span class="hljs-keyword">class</span> &lt;<span class="hljs-title">class_name</span>&gt;(<span class="hljs-params">[base_class]</span>):</span>
    [class_member_property]

    [
    <span class="hljs-function"><span class="hljs-keyword">def</span> &lt;<span class="hljs-title">member_method</span>&gt;:</span>
        &lt;statement block&gt;
    ]
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="6" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="6" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<h3>面向对象的基本术语</h3>
<ol>
<li><code>class类</code></li>
<li><code>object对象</code>： 在<code>OO</code>中，特指<code>class类</code>的<code>instance实例</code></li>
<li><code>attribute属性/property财产、属性/field字段</code>： <code>class</code>内定义的、属于<code>class</code>或<code>object</code>的变量（<code>method</code>中的局部变量不属于<code>class</code>或<code>object</code>）</li>
<li><code>method方法</code>： <code>class</code>内定义的函数</li>
<li><code>constructor构造方法</code>： 创建<code>instance</code>时用于初始<code>object</code>的<code>method</code></li>
<li><code>destructor析构方法</code>： 释放<code>instance</code>时用于清理<code>object</code>的<code>method</code></li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="7" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="7" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<h3>self与cls</h3>
<ol>
<li><code>self</code>： 指向<code>object</code>本身的变量</li>
<li><code>cls</code>： 指向<code>class</code>本身的变量</li>
<li>调用<code>instance method</code>或<code>class method</code>时，<code>self</code>或<code>cls</code>实参由解释器自动推断并自动传入</li>
</ol>
<p><img class="emoji" draggable="false" alt="⚠️" src="https://twemoji.maxcdn.com/2/svg/26a0.svg" data-marp-twemoji=""/> <code>self</code>和<code>cls</code>只是名字上的约定俗成，可以使用其他形参名字（但不建议），<code>self</code>和<code>cls</code>也不是<code>keyword</code></p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="8" data-class="lead" data-paginate="true" data-background-color="FloralWhite" data-footer="@aRoming" data-theme="gaia" class="lead" data-marpit-pagination="8" data-marpit-pagination-total="35" style="--class:lead;--paginate:true;--background-color:FloralWhite;--footer:@aRoming;--theme:gaia;background-color:FloralWhite;background-image:none;">
<h2>特殊成员与访问控制</h2>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="9" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="9" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<h3>访问权限</h3>
<ol>
<li>公有成员： 公共访问权限</li>
<li>保护成员： 类内或子类访问权限
<ol>
<li>单下划线开头</li>
<li><img class="emoji" draggable="false" alt="❗" src="https://twemoji.maxcdn.com/2/svg/2757.svg" data-marp-twemoji=""/> 保护成员仅为约定，实际上，类外可直接访问保护成员</li>
</ol>
</li>
<li>私有成员： 类内访问权限
<ol>
<li>双下划线开头、不以双下划线结尾</li>
<li><img class="emoji" draggable="false" alt="❗" src="https://twemoji.maxcdn.com/2/svg/2757.svg" data-marp-twemoji=""/> <code>Python</code>使用<code>name mapping</code>将私有成员名字前加<code>_&lt;class_name&gt;</code>，此时，类外无法通过原名字访问</li>
</ol>
</li>
</ol>
<p><img class="emoji" draggable="false" alt="👉" src="https://twemoji.maxcdn.com/2/svg/1f449.svg" data-marp-twemoji=""/> 避免使用保护成员</p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="10" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="10" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<pre><code class="language-python"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Demo_Permission</span>():</span>

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span>(<span class="hljs-params">self</span>):</span>
        self._protected_member = <span class="hljs-number">100</span>
        self.__private_member = <span class="hljs-number">200</span>


demo = Demo_Permission()

print(<span class="hljs-string">&quot;access protected member outside class will ok ==&gt; &quot;</span> + <span class="hljs-built_in">str</span>(demo._protected_member))
print(<span class="hljs-string">&quot;access private member outside class will ok ==&gt; &quot;</span> + <span class="hljs-built_in">str</span>(demo._Demo_Permission__private_member))

<span class="hljs-string">&quot;&quot;&quot;will throw AttributeError&quot;&quot;&quot;</span>
<span class="hljs-comment"># print(&quot;access private member outside class ==&gt; &quot;+str(demo.__private_member))</span>
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="11" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="11" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<h3>特殊成员</h3>
<ol>
<li>特殊成员： <code>Python interpreter</code>定义的具有特殊用途的成员，<strong>公共访问权限</strong></li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="12" data-class="lead" data-paginate="true" data-background-color="FloralWhite" data-footer="@aRoming" data-theme="gaia" class="lead" data-marpit-pagination="12" data-marpit-pagination-total="35" style="--class:lead;--paginate:true;--background-color:FloralWhite;--footer:@aRoming;--theme:gaia;background-color:FloralWhite;background-image:none;">
<h2>属性和方法</h2>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="13" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="13" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<h3>Attribute属性</h3>
<ol>
<li>实例属性： 属于<code>object</code>的数据，每个<code>instance</code>拥有一份数据
<ol>
<li>定义方式： 在成员方法中定义（不在成员方法外定义），一般通过<code>__init__()</code>定义</li>
<li>访问方式： 通过<code>object</code>访问</li>
</ol>
</li>
<li>类属性： 属于<code>class</code>的数据，<code>class</code>的所有<code>instance</code>共享一份数据
<ol>
<li>定义方式： 在类中定义</li>
<li>访问方式： 通过<code>class</code>或<code>object</code>访问</li>
</ol>
</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="14" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="14" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<pre><code class="language-python"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">SingleInstance</span>:</span>
    num = <span class="hljs-number">0</span>  <span class="hljs-comment"># class property</span>

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span>(<span class="hljs-params">self, name</span>):</span>
        <span class="hljs-keyword">if</span> SingleInstance.num &gt; <span class="hljs-number">0</span>:  <span class="hljs-comment"># access through classname</span>
            <span class="hljs-keyword">raise</span> Exception(<span class="hljs-string">&quot;只能创建一个对象&quot;</span>)
        SingleInstance.num += <span class="hljs-number">1</span>
        self.__name = name  <span class="hljs-comment"># access through object</span>


t1 = SingleInstance(<span class="hljs-string">&quot;69lisi&quot;</span>)
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="15" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="15" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<h3>Method方法</h3>
<ol>
<li><code>instance method实例方法</code>： 属于<code>object</code>的方法，通过<code>object</code>访问
<ol>
<li>首个形参为<code>self</code></li>
</ol>
</li>
<li><code>class method类方法</code>： 属于<code>class</code>的方法，通过<code>class</code>或<code>object</code>访问
<ol>
<li>首个形参为<code>cls</code></li>
<li><code>@classmethod</code>修饰</li>
</ol>
</li>
<li><code>static method静态方法</code>： 与<code>class</code>相关的方法，可直接访问（也可通过<code>class</code>或<code>object</code>访问）
<ol>
<li><code>@staticmethod</code>修饰</li>
</ol>
</li>
</ol>
<p><img class="emoji" draggable="false" alt="⚠️" src="https://twemoji.maxcdn.com/2/svg/26a0.svg" data-marp-twemoji=""/> <code>class method</code>和<code>static method</code>不能 <strong><em>直接</em></strong> 访问实例属性、实例方法</p>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="16" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="16" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<pre><code class="language-python"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Root</span>:</span>
    __total = <span class="hljs-number">0</span>  <span class="hljs-comment"># class property</span>

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span>(<span class="hljs-params">self, v</span>):</span>  <span class="hljs-comment"># constructor</span>
        self.__value = v  <span class="hljs-comment"># instance property, access by object</span>
        Root.__total += <span class="hljs-number">1</span>  <span class="hljs-comment"># class property, access by class</span>

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">show</span>(<span class="hljs-params">self</span>):</span>  <span class="hljs-comment"># instance method</span>
        print(<span class="hljs-string">&quot;self.__value:&quot;</span>, self.__value)
        print(<span class="hljs-string">&quot;Root.__total:&quot;</span>, Root.__total)

<span class="hljs-meta">    @classmethod</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">class_show_total</span>(<span class="hljs-params">cls</span>):</span>  <span class="hljs-comment"># class method</span>
        print(cls.__total)

<span class="hljs-meta">    @staticmethod</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">static_show_total</span>():</span>  <span class="hljs-comment"># static method</span>
        print(Root.__total)


r = Root(<span class="hljs-number">3</span>)
r.show()
r.class_show_total()
r = Root(<span class="hljs-number">3</span>)
r.static_show_total()
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="17" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="17" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<h3>类的名字空间</h3>
<ol>
<li><code>global namespace</code></li>
<li><code>class namespace</code></li>
<li><code>object namespace</code></li>
<li><code>local namespace</code></li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="18" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="18" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<h3>类的名字空间访问规则</h3>
<ol>
<li>类外： 后定义的方法覆盖先定义的方法</li>
<li>类内、方法外： <code>class namespace</code></li>
<li>方法内
<ol>
<li><code>self</code>指定为<code>object namespace</code></li>
<li><code>cls</code>指定为<code>class namespace</code></li>
<li>无<code>self</code>或<code>cls</code>时，为<code>local namespace</code></li>
</ol>
</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="19" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="19" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<h3>属性方法</h3>
<ol>
<li>通过<code>@property</code>定义 <strong><em>类外</em></strong> 只读属性</li>
<li>通过<code>property()</code>定义读、写、删除权限属性</li>
</ol>
<pre><code class="language-python"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">property</span>(<span class="hljs-params">fget=<span class="hljs-literal">None</span>, fset=<span class="hljs-literal">None</span>, fdel=<span class="hljs-literal">None</span>, doc=<span class="hljs-literal">None</span></span>)
</span></span></span></foreignObject></svg></code></pre>
<blockquote>
<p><a href="https://docs.python.org/3.9/library/functions.html#property">https://docs.python.org/3.9/library/functions.html#property</a></p>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="20" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="20" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<pre><code class="language-python"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">C</span>:</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span>(<span class="hljs-params">self</span>):</span>
        self._x = <span class="hljs-literal">None</span>

<span class="hljs-meta">    @property</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">x</span>(<span class="hljs-params">self</span>):</span>
        <span class="hljs-string">&quot;&quot;&quot;I&#x27;m the &#x27;x&#x27; property.&quot;&quot;&quot;</span>
        <span class="hljs-keyword">return</span> self._x

<span class="hljs-meta">    @x.setter</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">x</span>(<span class="hljs-params">self, value</span>):</span>
        self._x = value

<span class="hljs-meta">    @x.deleter</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">x</span>(<span class="hljs-params">self</span>):</span>
        <span class="hljs-keyword">del</span> self._x
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="21" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="21" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<pre><code class="language-python"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">C</span>:</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span>(<span class="hljs-params">self</span>):</span>
        self._x = <span class="hljs-literal">None</span>

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">getx</span>(<span class="hljs-params">self</span>):</span>
        <span class="hljs-keyword">return</span> self._x

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">setx</span>(<span class="hljs-params">self, value</span>):</span>
        self._x = value

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">delx</span>(<span class="hljs-params">self</span>):</span>
        <span class="hljs-keyword">del</span> self._x

    x = <span class="hljs-built_in">property</span>(getx, setx, delx, <span class="hljs-string">&quot;I&#x27;m the &#x27;x&#x27; property.&quot;</span>)
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="22" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="22" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<pre><code class="language-python"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Test</span>:</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span>(<span class="hljs-params">self, value</span>):</span>
        self.__rwd_value = value
        self.__ro_value = value

<span class="hljs-meta">    @property</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">ro_value</span>(<span class="hljs-params">self</span>):</span> <span class="hljs-comment"># outer-class use by object.ro_value</span>
        <span class="hljs-keyword">return</span> self.__ro_value

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__get_rwd_value</span>(<span class="hljs-params">self</span>):</span>
        <span class="hljs-keyword">return</span> self.__value

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__set_rwd_value</span>(<span class="hljs-params">self, v</span>):</span>
        self.__value = v

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__del_rwd_value</span>(<span class="hljs-params">self</span>):</span>
        <span class="hljs-keyword">del</span> self.__value

    value = <span class="hljs-built_in">property</span>(__get_rwd_value, __set_rwd_value, __del_rwd_value)

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">show</span>(<span class="hljs-params">self</span>):</span>
        print(self.__value)

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">modify_ro_value</span>(<span class="hljs-params">self</span>):</span>
        self.__ro_value = <span class="hljs-number">5</span>  <span class="hljs-comment"># can modify inside class</span>


test = Test(<span class="hljs-number">3</span>)
print(test.ro_value)
test.modify_ro_value()
print(test.ro_value)
test.rwd_value = <span class="hljs-number">12</span>  <span class="hljs-comment"># modify outside class</span>
print(test.rwd_value)
<span class="hljs-comment"># test.ro_value = 10  # cannot modify outside class</span>
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="23" data-class="lead" data-paginate="true" data-background-color="FloralWhite" data-footer="@aRoming" data-theme="gaia" class="lead" data-marpit-pagination="23" data-marpit-pagination-total="35" style="--class:lead;--paginate:true;--background-color:FloralWhite;--footer:@aRoming;--theme:gaia;background-color:FloralWhite;background-image:none;">
<h2>继承Inheritance</h2>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="24" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="24" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<h3><code>Python</code>的继承</h3>
<ol>
<li>继承是一种复用机制，在一个现有的类的基础上进行扩展</li>
<li>被继承的类称为“父类/基类”，继承的类称为“子类/派生类”</li>
<li>子类继承了基类的公有成员和保护成员，不继承基类的私有成员</li>
<li>子类通过<code>super([&lt;base_clsname&gt;[, self]])</code>或<code>&lt;base_clsname&gt;.</code>访问基类成员</li>
<li>多重继承时，如果多个基类中有相同的成员，而子类在使用时未指定明确的基类，则按继承声明从左到右顺序继随第一个匹配的成员</li>
</ol>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="25" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="25" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<pre><code class="language-python"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">C</span>(<span class="hljs-params">B</span>):</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">method</span>(<span class="hljs-params">self, arg</span>):</span>
        <span class="hljs-built_in">super</span>().method(arg)    <span class="hljs-comment"># This does the same thing as:</span>
                               <span class="hljs-comment"># super(C, self).method(arg)</span>
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="26" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="26" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<pre><code class="language-python"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Person</span>(<span class="hljs-params"><span class="hljs-built_in">object</span></span>):</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span>(<span class="hljs-params">self, name=<span class="hljs-string">&#x27;&#x27;</span>, age=<span class="hljs-number">20</span>, sex=<span class="hljs-string">&#x27;man&#x27;</span></span>):</span>
        self.set_name(name)
        self.set_age(age)
        self.set_gender(sex)

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">set_name</span>(<span class="hljs-params">self, name</span>):</span>
        <span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> <span class="hljs-built_in">isinstance</span>(name, <span class="hljs-built_in">str</span>):
            <span class="hljs-keyword">raise</span> Exception(<span class="hljs-string">&#x27;name must be string.&#x27;</span>)
        self.__name = name

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">set_age</span>(<span class="hljs-params">self, age</span>):</span>
        <span class="hljs-keyword">if</span> <span class="hljs-built_in">type</span>(age) != <span class="hljs-built_in">int</span>:
            <span class="hljs-keyword">raise</span> Exception(<span class="hljs-string">&#x27;age must be integer.&#x27;</span>)
        self.__age = age

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">set_gender</span>(<span class="hljs-params">self, gender</span>):</span>
        <span class="hljs-keyword">if</span> gender <span class="hljs-keyword">not</span> <span class="hljs-keyword">in</span> (<span class="hljs-string">&#x27;male&#x27;</span>, <span class="hljs-string">&#x27;female&#x27;</span>):
            <span class="hljs-keyword">raise</span> Exception(<span class="hljs-string">&#x27;gender must be &quot;male&quot; or &quot;female&quot;&#x27;</span>)
        self.__gender = gender

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">show</span>(<span class="hljs-params">self</span>):</span>
        print(self.__name, self.__age, self.__gender, sep=<span class="hljs-string">&#x27;\n&#x27;</span>)
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="27" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="27" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<pre><code class="language-python"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Teacher</span>(<span class="hljs-params">Person</span>):</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span>(<span class="hljs-params">self, name=<span class="hljs-string">&#x27;&#x27;</span>, age=<span class="hljs-number">30</span>,
                 gender=<span class="hljs-string">&#x27;male&#x27;</span>, department=<span class="hljs-string">&#x27;Computer&#x27;</span></span>):</span>
        <span class="hljs-built_in">super</span>(Teacher, self).__init__(name, age, gender)  <span class="hljs-comment"># Person.__init__(self, name, age, sex)</span>
        self.set_department(department)

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">set_department</span>(<span class="hljs-params">self, department</span>):</span>
        <span class="hljs-keyword">if</span> <span class="hljs-built_in">type</span>(department) != <span class="hljs-built_in">str</span>:
            <span class="hljs-keyword">raise</span> Exception(<span class="hljs-string">&#x27;department must be a string.&#x27;</span>)
        self.__department = department

    <span class="hljs-comment"># override</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">show</span>(<span class="hljs-params">self</span>):</span>
        <span class="hljs-built_in">super</span>(Teacher, self).show()
        print(self.__department)
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="28" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="28" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<pre><code class="language-python"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">&#x27;__main__&#x27;</span>:
    zhangsan = Person(<span class="hljs-string">&#x27;Zhang San&#x27;</span>, <span class="hljs-number">19</span>, <span class="hljs-string">&#x27;male&#x27;</span>)
    zhangsan.show()
    print(<span class="hljs-string">&#x27;=&#x27;</span> * <span class="hljs-number">30</span>)

    lisi = Teacher(<span class="hljs-string">&#x27;Li si&#x27;</span>, <span class="hljs-number">32</span>, <span class="hljs-string">&#x27;male&#x27;</span>, <span class="hljs-string">&#x27;Math&#x27;</span>)
    lisi.show()
    lisi.set_age(<span class="hljs-number">40</span>)
    lisi.show()
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="29" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="29" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<h3><code>Python</code>继承的缺陷</h3>
<pre><code class="language-python"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">A</span>:</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span>(<span class="hljs-params">self</span>):</span>
        self.__name = <span class="hljs-string">&#x27;python&#x27;</span>  <span class="hljs-comment"># 翻译成self._A__name=&#x27;python&#x27;</span>


<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">A</span>(<span class="hljs-params">A</span>):</span>  <span class="hljs-comment"># 派生类和基类取相同的名字就可以使用基类的私有变量。</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">func</span>(<span class="hljs-params">self</span>):</span>
        print(self.__name)  <span class="hljs-comment"># 翻译成print self._A__name</span>


instance = A()
instance.func()
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="30" data-class="lead" data-paginate="true" data-background-color="FloralWhite" data-footer="@aRoming" data-theme="gaia" class="lead" data-marpit-pagination="30" data-marpit-pagination-total="35" style="--class:lead;--paginate:true;--background-color:FloralWhite;--footer:@aRoming;--theme:gaia;background-color:FloralWhite;background-image:none;">
<h2>Special Methods/Magic Methods特殊方法/魔术方法</h2>
<blockquote>
<ol>
<li><a href="https://docs.python.org/3/reference/datamodel.html#special-method-names">https://docs.python.org/3/reference/datamodel.html#special-method-names</a></li>
<li><a href="https://pycoders-weekly-chinese.readthedocs.io/en/latest/issue6/a-guide-to-pythons-magic-methods.html">https://pycoders-weekly-chinese.readthedocs.io/en/latest/issue6/a-guide-to-pythons-magic-methods.html</a></li>
</ol>
</blockquote>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="31" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="31" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<pre><code class="language-python"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-built_in">object</span>.__new__(cls[, ...]) <span class="hljs-comment"># Called to create a new instance of class cls.</span>
<span class="hljs-built_in">object</span>.__init__(self[, ...]) <span class="hljs-comment"># Called after the instance has been created (by __new__()), \</span>
                            <span class="hljs-comment"># but before it is returned to the caller.</span>
<span class="hljs-built_in">object</span>.__del__(self) <span class="hljs-comment"># Called when the instance is about to be destroyed.</span>

<span class="hljs-string">&quot;&quot;&quot;class by built-in function&quot;&quot;&quot;</span>
<span class="hljs-built_in">object</span>.__repr__(self)
<span class="hljs-built_in">object</span>.__str__(self)
<span class="hljs-built_in">object</span>.__bytes__(self)
<span class="hljs-built_in">object</span>.__format__(self, format_spec)
<span class="hljs-built_in">object</span>.__hash__(self)
<span class="hljs-built_in">object</span>.__bool__(self)
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="32" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="32" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<pre><code class="language-python"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-comment"># operator overloading运算符重载</span>
<span class="hljs-built_in">object</span>.__add__(self, other)
<span class="hljs-built_in">object</span>.__sub__(self, other)
<span class="hljs-built_in">object</span>.__mul__(self, other)
<span class="hljs-built_in">object</span>.__matmul__(self, other)
<span class="hljs-built_in">object</span>.__truediv__(self, other)
<span class="hljs-built_in">object</span>.__floordiv__(self, other)
<span class="hljs-built_in">object</span>.__mod__(self, other)
<span class="hljs-built_in">object</span>.__divmod__(self, other)
<span class="hljs-built_in">object</span>.__pow__(self, other[, modulo])
<span class="hljs-built_in">object</span>.__lshift__(self, other)
<span class="hljs-built_in">object</span>.__rshift__(self, other)
<span class="hljs-built_in">object</span>.__and__(self, other)
<span class="hljs-built_in">object</span>.__xor__(self, other)
<span class="hljs-built_in">object</span>.__or__(self, other)
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="33" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="33" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<pre><code class="language-python"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-built_in">object</span>.__getitem__(self, key)
<span class="hljs-built_in">object</span>.__setitem__(self, key, value)
<span class="hljs-built_in">object</span>.__delitem__(self, key)
<span class="hljs-built_in">object</span>.__missing__(self, key)
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="34" data-class="invert + lead" data-paginate="true" data-color="white" data-background-color="#202228" data-footer="@aRoming" data-theme="gaia" class="invert + lead" data-marpit-pagination="34" data-marpit-pagination-total="35" style="--class:invert + lead;--paginate:true;--color:white;--background-color:#202228;--footer:@aRoming;--theme:gaia;color:white;background-color:#202228;background-image:none;">
<pre><code class="language-python"><svg data-marp-fitting="svg" data-marp-fitting-code><foreignObject><span data-marp-fitting-svg-content><span data-marp-fitting-svg-content-wrap><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Demo</span>:</span>
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__init__</span>(<span class="hljs-params">self, value: <span class="hljs-built_in">int</span></span>) -&gt; <span class="hljs-keyword">None</span>:</span>
        self.__value = value

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__int__</span>(<span class="hljs-params">self</span>) -&gt; <span class="hljs-keyword">None</span>:</span>
        <span class="hljs-keyword">return</span> self.__value

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__str__</span>(<span class="hljs-params">self</span>) -&gt; str:</span>
        <span class="hljs-keyword">return</span> <span class="hljs-string">f&quot;value is <span class="hljs-subst">{self.__value}</span>&quot;</span>

    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__add__</span>(<span class="hljs-params">self, other</span>):</span>
        <span class="hljs-keyword">return</span> Demo(self.__value + <span class="hljs-built_in">int</span>(other))


demo = Demo(<span class="hljs-number">3</span>)
other_demo = Demo(<span class="hljs-number">4</span>)
print((demo + <span class="hljs-number">3</span>))
print(demo + other_demo)
</span></span></foreignObject></svg></code></pre>
<footer>@aRoming</footer>
</section>
</foreignObject></svg><svg data-marpit-svg="" viewBox="0 0 1280 720"><foreignObject width="1280" height="720"><section id="35" data-class="lead" data-paginate="true" data-background-color="FloralWhite" data-footer="@aRoming" data-theme="gaia" class="lead" data-marpit-pagination="35" data-marpit-pagination-total="35" style="--class:lead;--paginate:true;--background-color:FloralWhite;--footer:@aRoming;--theme:gaia;background-color:FloralWhite;background-image:none;">
<h1>Thank You</h1>
<h2><img class="emoji" draggable="false" alt="🆗" src="https://twemoji.maxcdn.com/2/svg/1f197.svg" data-marp-twemoji=""/>End of This Slide<img class="emoji" draggable="false" alt="🆗" src="https://twemoji.maxcdn.com/2/svg/1f197.svg" data-marp-twemoji=""/></h2>
<footer>@aRoming</footer>
</section>
<script>!function(){"use strict";const t="marpitSVGPolyfill:setZoomFactor,",e=Symbol();let r,o;function n(n){const i="object"==typeof n&&n.target||document,a="object"==typeof n?n.zoom:n;window[e]||(Object.defineProperty(window,e,{configurable:!0,value:!0}),window.addEventListener("message",(({data:e,origin:r})=>{if(r===window.origin)try{if(e&&"string"==typeof e&&e.startsWith(t)){const[,t]=e.split(","),r=Number.parseFloat(t);Number.isNaN(r)||(o=r)}}catch(t){console.error(t)}})));let l=!1;Array.from(i.querySelectorAll("svg[data-marpit-svg]"),(t=>{var e,n,i,s;t.style.transform||(t.style.transform="translateZ(0)");const c=a||o||t.currentScale||1;r!==c&&(r=c,l=c);const d=t.getBoundingClientRect(),{length:u}=t.children;for(let r=0;r<u;r+=1){const o=t.children[r],a=o.getScreenCTM();if(a){const t=null!==(n=null===(e=o.x)||void 0===e?void 0:e.baseVal.value)&&void 0!==n?n:0,r=null!==(s=null===(i=o.y)||void 0===i?void 0:i.baseVal.value)&&void 0!==s?s:0,l=o.firstChild,{style:u}=l;u.transformOrigin||(u.transformOrigin=`${-t}px ${-r}px`),u.transform=`scale(${c}) matrix(${a.a}, ${a.b}, ${a.c}, ${a.d}, ${a.e-d.left}, ${a.f-d.top}) translateZ(0.0001px)`}}})),!1!==l&&Array.from(i.querySelectorAll("iframe"),(({contentWindow:e})=>{null==e||e.postMessage(`${t}${l}`,"null"===window.origin?"*":window.origin)}))}r=1,o=void 0;const i=(t,e,r)=>{if(t.getAttribute(e)!==r)return t.setAttribute(e,r),!0};function a({once:t=!1,target:e=document}={}){const r="Apple Computer, Inc."===navigator.vendor?[n]:[];let o=!t;const a=()=>{for(const t of r)t({target:e});!function(t=document){Array.from(t.querySelectorAll('svg[data-marp-fitting="svg"]'),(t=>{var e;const r=t.firstChild,o=r.firstChild,{scrollWidth:n,scrollHeight:a}=o;let l,s=1;if(t.hasAttribute("data-marp-fitting-code")&&(l=null===(e=t.parentElement)||void 0===e?void 0:e.parentElement),t.hasAttribute("data-marp-fitting-math")&&(l=t.parentElement),l){const t=getComputedStyle(l),e=Math.ceil(l.clientWidth-parseFloat(t.paddingLeft||"0")-parseFloat(t.paddingRight||"0"));e&&(s=e)}const c=Math.max(n,s),d=Math.max(a,1),u=`0 0 ${c} ${d}`;i(r,"width",`${c}`),i(r,"height",`${d}`),i(t,"preserveAspectRatio",getComputedStyle(t).getPropertyValue("--preserve-aspect-ratio")||"xMinYMin meet"),i(t,"viewBox",u)&&t.classList.toggle("__reflow__")}))}(e),o&&window.requestAnimationFrame(a)};return a(),()=>{o=!1}}const l=Symbol(),s=document.currentScript;((t=document)=>{if("undefined"==typeof window)throw new Error("Marp Core's browser script is valid only in browser context.");if(t[l])return t[l];const e=a({target:t}),r=()=>{e(),delete t[l]};Object.defineProperty(t,l,{configurable:!0,value:r})})(s?s.getRootNode():document)}();
</script></foreignObject></svg></div><script>!function(){"use strict";var e=function(e,t){var n,r=1===(e.parent||e).nodeType?e.parent||e:document.querySelector(e.parent||e),s=[].filter.call("string"==typeof e.slides?r.querySelectorAll(e.slides):e.slides||r.children,(function(e){return"SCRIPT"!==e.nodeName})),a={},i=function(e,t){return(t=t||{}).index=s.indexOf(e),t.slide=e,t},o=function(e,t){a[e]=(a[e]||[]).filter((function(e){return e!==t}))},l=function(e,t){return(a[e]||[]).reduce((function(e,n){return e&&!1!==n(t)}),!0)},c=function(e,t){s[e]&&(n&&l("deactivate",i(n,t)),n=s[e],l("activate",i(n,t)))},d=function(e,t){var r=s.indexOf(n)+e;l(e>0?"next":"prev",i(n,t))&&c(r,t)},u={off:o,on:function(e,t){return(a[e]||(a[e]=[])).push(t),o.bind(null,e,t)},fire:l,slide:function(e,t){if(!arguments.length)return s.indexOf(n);l("slide",i(s[e],t))&&c(e,t)},next:d.bind(null,1),prev:d.bind(null,-1),parent:r,slides:s,destroy:function(e){l("destroy",i(n,e)),a={}}};return(t||[]).forEach((function(e){e(u)})),n||c(0),u};function t(e){e.parent.classList.add("bespoke-marp-parent"),e.slides.forEach((e=>e.classList.add("bespoke-marp-slide"))),e.on("activate",(t=>{const n=t.slide,r=!n.classList.contains("bespoke-marp-active");e.slides.forEach((e=>{e.classList.remove("bespoke-marp-active"),e.setAttribute("aria-hidden","true")})),n.classList.add("bespoke-marp-active"),n.removeAttribute("aria-hidden"),r&&(n.classList.add("bespoke-marp-active-ready"),document.body.clientHeight,n.classList.remove("bespoke-marp-active-ready"))}))}function n(e){let t=0,n=0;Object.defineProperty(e,"fragments",{enumerable:!0,value:e.slides.map((e=>[null,...e.querySelectorAll("[data-marpit-fragment]")]))});const r=r=>void 0!==e.fragments[t][n+r],s=(r,s)=>{t=r,n=s,e.fragments.forEach(((e,t)=>{e.forEach(((e,n)=>{if(null==e)return;const a=t<r||t===r&&n<=s;e.setAttribute("data-bespoke-marp-fragment",a?"active":"inactive"),t===r&&n===s?e.setAttribute("data-bespoke-marp-current-fragment","current"):e.removeAttribute("data-bespoke-marp-current-fragment")}))})),e.fragmentIndex=s;const a={slide:e.slides[r],index:r,fragments:e.fragments[r],fragmentIndex:s};e.fire("fragment",a)};e.on("next",(({fragment:a=!0})=>{if(a){if(r(1))return s(t,n+1),!1;const a=t+1;e.fragments[a]&&s(a,0)}else{const r=e.fragments[t].length;if(n+1<r)return s(t,r-1),!1;const a=e.fragments[t+1];a&&s(t+1,a.length-1)}})),e.on("prev",(({fragment:a=!0})=>{if(r(-1)&&a)return s(t,n-1),!1;const i=t-1;e.fragments[i]&&s(i,e.fragments[i].length-1)})),e.on("slide",(({index:t,fragment:n})=>{let r=0;if(void 0!==n){const s=e.fragments[t];if(s){const{length:e}=s;r=-1===n?e-1:Math.min(Math.max(n,0),e-1)}}s(t,r)})),s(0,0)}
/*!
* screenfull
* v5.0.2 - 2020-02-13
* (c) Sindre Sorhus; MIT License
*/
var r,s=(function(e){!function(){var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},n=e.exports,r=function(){for(var e,n=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],r=0,s=n.length,a={};r<s;r++)if((e=n[r])&&e[1]in t){for(r=0;r<e.length;r++)a[n[0][r]]=e[r];return a}return!1}(),s={change:r.fullscreenchange,error:r.fullscreenerror},a={request:function(e){return new Promise(function(n,s){var a=function(){this.off("change",a),n()}.bind(this);this.on("change",a);var i=(e=e||t.documentElement)[r.requestFullscreen]();i instanceof Promise&&i.then(a).catch(s)}.bind(this))},exit:function(){return new Promise(function(e,n){if(this.isFullscreen){var s=function(){this.off("change",s),e()}.bind(this);this.on("change",s);var a=t[r.exitFullscreen]();a instanceof Promise&&a.then(s).catch(n)}else e()}.bind(this))},toggle:function(e){return this.isFullscreen?this.exit():this.request(e)},onchange:function(e){this.on("change",e)},onerror:function(e){this.on("error",e)},on:function(e,n){var r=s[e];r&&t.addEventListener(r,n,!1)},off:function(e,n){var r=s[e];r&&t.removeEventListener(r,n,!1)},raw:r};r?(Object.defineProperties(a,{isFullscreen:{get:function(){return Boolean(t[r.fullscreenElement])}},element:{enumerable:!0,get:function(){return t[r.fullscreenElement]}},isEnabled:{enumerable:!0,get:function(){return Boolean(t[r.fullscreenEnabled])}}}),n?e.exports=a:window.screenfull=a):n?e.exports={isEnabled:!1}:window.screenfull={isEnabled:!1}}()}(r={exports:{}},r.exports),r.exports);function a(e){e.fullscreen=()=>{s.isEnabled&&s.toggle(document.body)},document.addEventListener("keydown",(t=>{70!==t.which&&122!==t.which||t.altKey||t.ctrlKey||t.metaKey||!s.isEnabled||(e.fullscreen(),t.preventDefault())}))}function i(e=2e3){return t=>{let n;function r(){n&&clearTimeout(n),n=setTimeout((()=>{t.parent.classList.add("bespoke-marp-inactive"),t.fire("marp-inactive")}),e),t.parent.classList.contains("bespoke-marp-inactive")&&(t.parent.classList.remove("bespoke-marp-inactive"),t.fire("marp-active"))}document.addEventListener("mousedown",r),document.addEventListener("mousemove",r),document.addEventListener("touchend",r),setTimeout(r,0)}}const o=["AUDIO","BUTTON","INPUT","SELECT","TEXTAREA","VIDEO"];function l(e){e.parent.addEventListener("keydown",(e=>{if(!e.target)return;const t=e.target;(o.includes(t.nodeName)||"true"===t.contentEditable)&&e.stopPropagation()}))}function c(e){window.addEventListener("load",(()=>{for(const t of e.slides){const e=t.querySelector("[data-marp-fitting]")?"":"hideable";t.setAttribute("data-bespoke-marp-load",e)}}))}var d;function u({interval:e=200}={}){return t=>{document.addEventListener("keydown",(e=>{if(32===e.which&&e.shiftKey)t.prev();else if(33===e.which||37===e.which||38===e.which)t.prev({fragment:!e.shiftKey});else if(32!==e.which||e.shiftKey)if(34===e.which||39===e.which||40===e.which)t.next({fragment:!e.shiftKey});else if(35===e.which)t.slide(t.slides.length-1,{fragment:-1});else{if(36!==e.which)return;t.slide(0)}else t.next();e.preventDefault()}));let n,r,s=0;t.parent.addEventListener("wheel",(a=>{let i=!1;const o=(e,t)=>{e&&(i=i||function(e,t){return function(e,t){const n=t===d.X?"Width":"Height";return e[`client${n}`]<e[`scroll${n}`]}(e,t)&&function(e,t){const{overflow:n}=e,r=e[`overflow${t}`];return"auto"===n||"scroll"===n||"auto"===r||"scroll"===r}(getComputedStyle(e),t)}(e,t)),(null==e?void 0:e.parentElement)&&o(e.parentElement,t)};if(0!==a.deltaX&&o(a.target,d.X),0!==a.deltaY&&o(a.target,d.Y),i)return;a.preventDefault(),r&&clearTimeout(r),r=setTimeout((()=>{n=0}),e);const l=Date.now()-s<e,c=Math.sqrt(Math.pow(a.deltaX,2)+Math.pow(a.deltaY,2)),u=c<=n;if(n=c,l||u)return;let f;(a.deltaX>0||a.deltaY>0)&&(f="next"),(a.deltaX<0||a.deltaY<0)&&(f="prev"),f&&(t[f](),s=Date.now())}))}}!function(e){e.X="X",e.Y="Y"}(d||(d={}));const f=(...e)=>history.replaceState(...e),m="data-bespoke-view";var p;!function(e){e.Normal="",e.Presenter="presenter",e.Next="next"}(p||(p={}));const h=(e,{protocol:t,host:n,pathname:r,hash:s}=location)=>{const a=e.toString();return`${t}//${n}${r}${a?"?":""}${a}${s}`},g=()=>{switch(document.body.getAttribute(m)){case p.Normal:return p.Normal;case p.Presenter:return p.Presenter;case p.Next:return p.Next;default:throw new Error("View mode is not assigned.")}},v=e=>new URLSearchParams(location.search).get(e),b=(e,t={})=>{const n=Object.assign({location:location,setter:f},t),r=new URLSearchParams(n.location.search);for(const t of Object.keys(e)){const n=e[t];"string"==typeof n?r.set(t,n):r.delete(t)}try{n.setter(null,document.title,h(r,n.location))}catch(e){console.error(e)}},w={available:(()=>{try{return localStorage.setItem("bespoke-marp","bespoke-marp"),localStorage.removeItem("bespoke-marp"),!0}catch(e){return console.warn("Warning: Using localStorage is restricted in the current host so some features may not work."),!1}})(),get:e=>{try{return localStorage.getItem(e)}catch(e){return null}},set:(e,t)=>{try{return localStorage.setItem(e,t),!0}catch(e){return!1}},remove:e=>{try{return localStorage.removeItem(e),!0}catch(e){return!1}}};function y(e=".bespoke-marp-osc"){const t=document.querySelector(e);if(!t)return()=>{};const n=(e,n)=>{t.querySelectorAll(`[data-bespoke-marp-osc=${JSON.stringify(e)}]`).forEach(n)};return s.isEnabled||n("fullscreen",(e=>e.style.display="none")),w.available||n("presenter",(e=>{e.disabled=!0,e.title="Presenter view is disabled due to restricted localStorage."})),e=>{t.addEventListener("click",(t=>{if(t.target instanceof HTMLElement){const{bespokeMarpOsc:n}=t.target.dataset;switch(n&&t.target.blur(),n){case"next":e.next({fragment:!t.shiftKey});break;case"prev":e.prev({fragment:!t.shiftKey});break;case"fullscreen":"function"==typeof e.fullscreen&&s.isEnabled&&e.fullscreen();break;case"presenter":e.openPresenterView()}}})),e.parent.appendChild(t),e.on("activate",(({index:t})=>{n("page",(n=>n.textContent=`Page ${t+1} of ${e.slides.length}`))})),e.on("fragment",(({index:t,fragments:r,fragmentIndex:s})=>{n("prev",(e=>e.disabled=0===t&&0===s)),n("next",(n=>n.disabled=t===e.slides.length-1&&s===r.length-1))})),e.on("marp-active",(()=>t.removeAttribute("aria-hidden"))),e.on("marp-inactive",(()=>t.setAttribute("aria-hidden","true"))),s.isEnabled&&s.onchange((()=>n("fullscreen",(e=>e.classList.toggle("exit",s.isEnabled&&s.isFullscreen)))))}}function x(){const e=Math.max(Math.floor(.85*window.innerWidth),640),t=Math.max(Math.floor(.85*window.innerHeight),360);return window.open(this.presenterUrl,`bespoke-marp-presenter-${this.syncKey}`,`width=${e},height=${t},menubar=no,toolbar=no`)}function k(){const e=new URLSearchParams(location.search);return e.set("view","presenter"),e.set("sync",this.syncKey),h(e)}var E=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"];let L=e=>String(e).replace(/[&<>"']/g,(e=>`&${S[e]};`)),S={"&":"amp","<":"lt",">":"gt",'"':"quot","'":"apos"},I="dangerouslySetInnerHTML",P={className:"class",htmlFor:"for"},M={};function N(e,t){let n=[],r="";t=t||{};for(let e=arguments.length;e-- >2;)n.push(arguments[e]);if("function"==typeof e)return t.children=n.reverse(),e(t);if(e){if(r+="<"+e,t)for(let e in t)!1!==t[e]&&null!=t[e]&&e!==I&&(r+=` ${P[e]?P[e]:L(e)}="${L(t[e])}"`);r+=">"}if(-1===E.indexOf(e)){if(t[I])r+=t[I].__html;else for(;n.length;){let e=n.pop();if(e)if(e.pop)for(let t=e.length;t--;)n.push(e[t]);else r+=!0===M[e]?e:L(e)}r+=e?`</${e}>`:""}return M[r]=!0,r}const F=({children:e})=>N(null,null,...e),$="bespoke-marp-presenter-container",O="bespoke-marp-presenter-next",q="bespoke-marp-presenter-next-container",C="bespoke-marp-presenter-note-container",T="bespoke-marp-presenter-info-container",A="bespoke-marp-presenter-info-page",K="bespoke-marp-presenter-info-page-text",j="bespoke-marp-presenter-info-page-prev",R="bespoke-marp-presenter-info-page-next",U="bespoke-marp-presenter-info-time",D="bespoke-marp-presenter-info-timer";function V(e){const{title:t}=document;document.title="[Presenter view]"+(t?` - ${t}`:"");const n={},r=e=>(n[e]=n[e]||document.querySelector(`.${e}`),n[e]);document.body.appendChild((e=>{const t=document.createElement("div");return t.className=$,t.appendChild(e),t.insertAdjacentHTML("beforeend",N(F,null,N("div",{class:q},N("iframe",{class:O,src:"?view=next"})),N("div",{class:C}),N("div",{class:T},N("div",{class:A},N("button",{class:j,tabindex:"-1",title:"Previous"},"Previous"),N("span",{class:K}),N("button",{class:R,tabindex:"-1",title:"Next"},"Next")),N("time",{class:U,title:"Current time"}),N("div",{class:D})))),t})(e.parent)),(e=>{r(q).addEventListener("click",(()=>e.next()));const t=r(O),n=(s=t,(e,t)=>{var n;return null===(n=s.contentWindow)||void 0===n?void 0:n.postMessage(`navigate:${e},${t}`,"null"===window.origin?"*":window.origin)});var s;t.addEventListener("load",(()=>{r(q).classList.add("active"),n(e.slide(),e.fragmentIndex),e.on("fragment",(({index:e,fragmentIndex:t})=>n(e,t)))}));const a=document.querySelectorAll(".bespoke-marp-note");a.forEach((e=>{e.addEventListener("keydown",(e=>e.stopPropagation())),r(C).appendChild(e)})),e.on("activate",(()=>a.forEach((t=>t.classList.toggle("active",t.dataset.index==e.slide()))))),e.on("activate",(({index:t})=>{r(K).textContent=`${t+1} / ${e.slides.length}`}));const i=r(j),o=r(R);i.addEventListener("click",(t=>{i.blur(),e.prev({fragment:!t.shiftKey})})),o.addEventListener("click",(t=>{o.blur(),e.next({fragment:!t.shiftKey})})),e.on("fragment",(({index:t,fragments:n,fragmentIndex:r})=>{i.disabled=0===t&&0===r,o.disabled=t===e.slides.length-1&&r===n.length-1}));const l=()=>r(U).textContent=(new Date).toLocaleTimeString();l(),setInterval(l,250)})(e)}function X(e){const t=g();return t===p.Next&&e.appendChild(document.createElement("span")),e=>{t===p.Normal&&function(e){if(!(e=>e.syncKey&&"string"==typeof e.syncKey)(e))throw new Error("The current instance of Bespoke.js is invalid for Marp bespoke presenter plugin.");Object.defineProperties(e,{openPresenterView:{enumerable:!0,value:x},presenterUrl:{enumerable:!0,get:k}}),w.available&&document.addEventListener("keydown",(t=>{80!==t.which||t.altKey||t.ctrlKey||t.metaKey||(t.preventDefault(),e.openPresenterView())}))}(e),t===p.Presenter&&V(e),t===p.Next&&function(e){const t=t=>{if(t.origin!==window.origin)return;const[n,r]=t.data.split(":");if("navigate"===n){const[t,n]=r.split(",");let s=Number.parseInt(t,10),a=Number.parseInt(n,10)+1;a>=e.fragments[s].length&&(s+=1,a=0),e.slide(s,{fragment:a})}};window.addEventListener("message",t),e.on("destroy",(()=>window.removeEventListener("message",t)))}(e)}}function Y(e){e.on("activate",(t=>{document.querySelectorAll(".bespoke-progress-parent > .bespoke-progress-bar").forEach((n=>{n.style.flexBasis=100*t.index/(e.slides.length-1)+"%"}))}))}const B=e=>{const t=Number.parseInt(e,10);return Number.isNaN(t)?null:t};function z(e={}){const t=Object.assign({history:!0},e);return e=>{let n=!0;const r=e=>{const t=n;try{return n=!0,e()}finally{n=t}},s=(t={fragment:!0})=>{((t,n)=>{const{fragments:r,slides:s}=e,a=Math.max(0,Math.min(t,s.length-1)),i=Math.max(0,Math.min(n||0,r[a].length-1));a===e.slide()&&i===e.fragmentIndex||e.slide(a,{fragment:i})})((B(location.hash.slice(1))||1)-1,t.fragment?B(v("f")||""):null)};e.on("fragment",(({index:e,fragmentIndex:r})=>{n||b({f:0===r||r.toString()},{location:Object.assign(Object.assign({},location),{hash:`#${e+1}`}),setter:(...e)=>t.history?history.pushState(...e):history.replaceState(...e)})})),setTimeout((()=>{s(),window.addEventListener("hashchange",(()=>r((()=>{s({fragment:!1}),b({f:void 0})})))),window.addEventListener("popstate",(()=>{n||r((()=>s()))})),n=!1}),0)}}let H;function W(e={}){const t=e.key||((e=21)=>{let t="",n=crypto.getRandomValues(new Uint8Array(e));for(;e--;){let r=63&n[e];t+=r<36?r.toString(36):r<62?(r-26).toString(36).toUpperCase():r<63?"_":"-"}return t})(),n=`bespoke-marp-sync-${t}`,r=()=>{const e=w.get(n);return e?JSON.parse(e):Object.create(null)},s=e=>{const t=r(),s=Object.assign(Object.assign({},t),e(t));return w.set(n,JSON.stringify(s)),s};return s((e=>({reference:(e.reference||0)+1}))),e=>{Object.defineProperty(e,"syncKey",{value:t,enumerable:!0});let a=!0;setTimeout((()=>{e.on("fragment",(e=>{a&&s((()=>({index:e.index,fragmentIndex:e.fragmentIndex})))}))}),0),window.addEventListener("storage",(t=>{if(t.key===n&&t.oldValue&&t.newValue){const n=JSON.parse(t.oldValue),r=JSON.parse(t.newValue);if(n.index!==r.index||n.fragmentIndex!==r.fragmentIndex)try{a=!1,e.slide(r.index,{fragment:r.fragmentIndex})}finally{a=!0}}})),e.on("destroy",(()=>{const{reference:e}=r();void 0===e||e<=1?w.remove(n):s((()=>({reference:e-1})))}))}}function J({slope:e=Math.tan(-35*Math.PI/180),swipeThreshold:t=30}={}){return n=>{let r;const s=n.parent,a=e=>{const t=s.getBoundingClientRect();return{x:e.pageX-(t.left+t.right)/2,y:e.pageY-(t.top+t.bottom)/2}};s.addEventListener("touchstart",(e=>{r=1===e.touches.length?a(e.touches[0]):void 0}),{passive:!0}),s.addEventListener("touchmove",(e=>{if(r)if(1===e.touches.length){e.preventDefault();const t=a(e.touches[0]),n=t.x-r.x,s=t.y-r.y;r.delta=Math.sqrt(Math.pow(Math.abs(n),2)+Math.pow(Math.abs(s),2)),r.radian=Math.atan2(n,s)}else r=void 0})),s.addEventListener("touchend",(s=>{if(r){if(r.delta&&r.delta>=t&&r.radian){let t=r.radian-e;t=(t+Math.PI)%(2*Math.PI)-Math.PI,n[t<0?"next":"prev"](),s.stopPropagation()}r=void 0}}),{passive:!0})}}
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */function _(e,t,n,r){return new(n||(n=Promise))((function(s,a){function i(e){try{l(r.next(e))}catch(e){a(e)}}function o(e){try{l(r.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,o)}l((r=r.apply(e,t||[])).next())}))}const G=()=>(void 0===H&&(H="wakeLock"in navigator&&navigator.wakeLock),H),Q=()=>_(void 0,void 0,void 0,(function*(){const e=G();if(e)try{const t=yield e.request("screen");return t.addEventListener("release",(()=>{console.debug("[Marp CLI] Wake Lock was released")})),console.debug("[Marp CLI] Wake Lock is active"),t}catch(e){console.warn(e)}return null}));function Z(){return _(this,void 0,void 0,(function*(){if(!G())return;let e;const t=()=>{e&&"visible"===document.visibilityState&&Q()};return document.addEventListener("visibilitychange",t),document.addEventListener("fullscreenchange",t),e=yield Q(),e}))}const ee=[p.Normal,p.Presenter,p.Next];!function(r=document.getElementById("p")){document.body.setAttribute(m,(()=>{switch(v("view")){case"next":return p.Next;case"presenter":return p.Presenter;default:return p.Normal}})());const s=(e=>{const t=v(e);return b({[e]:void 0}),t})("sync")||void 0,o=!1,d=!0,f=e(r,((...e)=>{const t=ee.findIndex((e=>g()===e));if(t<0)throw new Error("Invalid view");return e.map((([e,n])=>e[t]&&n)).filter((e=>e))})([[d,d,o],W({key:s})],[[d,d,d],X(r)],[[d,d,o],l],[[d,d,d],t],[[d,o,o],i()],[[d,d,d],c],[[d,d,d],z({history:!1})],[[d,d,o],u()],[[d,d,o],a],[[d,o,o],Y],[[d,d,o],J()],[[d,o,o],y()],[[d,d,d],n],[[d,d,o],Z]));window.addEventListener("beforeunload",(()=>b({sync:f.syncKey}))),window.addEventListener("unload",(()=>f.destroy()))}()}();</script></body></html>